<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // let(变量) const(常数变量 -> 一经声明无法被修改)  ES6 新增声明变量的方式
    // var        ES5 以及以前声明变量的方式

    // let const 和 var 的共同点和区别
    // 共同点
    // 都可以用于声明全局变量和局部变量

    // 区别:
    // 1. var 声明的变量有变量提升,let const 声明的变量没有变量提升
    // 2. var 声明的变量可以重复声明,let const在同一作用域中无法重复声明,重复声明会报错(暂时性死区 => 同一作用域中无法重复声明)
    // 3. var let 声明的变量可以重新赋值,const声明的变量(常数变量),一经声明无法再次修改
    // 4. ES6新增块级作用域 ,块级作用域中let 和 const声明的变量是局部的 块级作用域对var没有影响

    // 关于变量提升
    // console.log(a);  //undefined
    // console.log(b);  //报错:  Cannot access 'b' before initialization 初始化之前无法访问b -> 声明之前无法使用(没有变量提升)
    // console.log(c);

    var a = 10;
    let b = 20;
    const c = 30;
    console.log(a, b, c);

    // 关于重复声明
    // var a = 100;
    // let b = 200;  // Identifier 'b' has already been declared  标识符'b'已经被声明
    // let c = 300;    // Identifier 'c' has already been declared
    // console.log(a);

    // 关于重新赋值
    a = 100;
    b = 200;
    c = 300;
    console.log(a, b, c);














</script>

</html>